home *** CD-ROM | disk | FTP | other *** search
/ PCGUIA 117 / PC Guia 117.iso / Software / Utils / Software6 / Product8 / feedview-0.9.7-fx.xpi / chrome / feedview.jar / content / overlay.js < prev    next >
Text File  |  2005-03-22  |  6KB  |  186 lines

  1.  
  2.             /*
  3.                 0.9.2 fixes
  4.                 
  5.                 [x] split words
  6.                 [x] slider
  7.                 [x] saving settings
  8.                 [ ] fix bad mime types?
  9.                 [x] menu bug
  10.                 [x] date show hide
  11.                 [ ] special chars fix
  12.                 [x] refresh on interval
  13.                 [/] image thumbnails
  14.                 [x] external stylesheet
  15.             */
  16.             
  17.     function listObject(obj, s) {
  18.         var res = "List: " + obj + "\n";
  19.         for(var list in obj) {
  20.             if (list.indexOf(s) == -1)
  21.                 res += list + ", ";
  22.         }
  23.  
  24.         alert(res);
  25.     }            
  26.             //var mime = Components.classes["@mozilla.org/mime;1"].getService(Components.interfaces.nsIMIMEService);
  27.             
  28.             //listObject(mime);
  29.             
  30.             var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  31.             
  32.             prefs = prefs.getBranch("extensions.feedview.");            
  33.             
  34.             var processor = new XSLTProcessor();
  35.             
  36.             var dataXSL = document.implementation.createDocument("", "", null);
  37.             
  38.             dataXSL.addEventListener("load", onXslLoad, false);
  39.             
  40.             dataXSL.load("chrome://feedview/content/rss.xml");    
  41.  
  42.             function onXslLoad(){processor.importStylesheet(dataXSL);}
  43.  
  44.  
  45.             function observeSettings(evnt)
  46.             {
  47.                 try{
  48.                 //alert("out");
  49.                 if(!evnt.originalTarget.documentElement.hasAttribute("feedviewDocument"))return;
  50.                 //alert("saving settings");
  51.                 var doc = evnt.originalTarget;
  52.                 var size = doc.getElementById("sizeslider").getAttribute("curpos");
  53.                 var sw = doc.getElementById("switchdate").getAttribute("show");
  54.                 
  55.                 
  56.  
  57.                 prefs.setIntPref("articleSize", size);
  58.                 prefs.setIntPref("showDate", sw);
  59.                 
  60.                 //window.removeEventListener("unload", observeSettings, true);
  61.                 }catch(ex){
  62.                     //alert("ex: " + ex);
  63.                 }
  64.             }
  65.  
  66.             function load(evnt)
  67.             {
  68.                 try{
  69.     
  70.                 /*
  71.                  if(evnt.originalTarget instanceof HTMLDocument ){ 
  72.                      var url = evnt.originalTarget.URL.toLowerCase();
  73.                      if(url.indexOf(".rss") != -1 || url.indexOf(".rdf") != -1){
  74.                      
  75.                          alert("nog xml rss file");
  76.                          //var doc = new Array();
  77.                          //doc.load(url);
  78.                          //
  79.                          listObject(evnt.originalTarget);
  80.                          alert(evnt.originalTarget.textContent);
  81.                          //listObject(evnt.originalTarget.ownerDocument);
  82.                          var parser = new DOMParser();
  83.                         evnt.originalTarget = parser.parseFromString("<rss></rss>", "text/xml");
  84.                          
  85.                         //listObject(parser);
  86.  
  87.                      }
  88.                  
  89.                  }
  90.                  */
  91.                  
  92.                 if(evnt.originalTarget instanceof XMLDocument){ 
  93.  
  94.                     
  95.                     var dataXML = evnt.originalTarget;
  96.  
  97.                     if((dataXML.documentElement.getAttribute("xmlns") != null 
  98.                         && (dataXML.documentElement.getAttribute("xmlns").toLowerCase() == "http://purl.org/rss/1.0/" 
  99.                         ||  dataXML.documentElement.getAttribute("xmlns").toLowerCase() == "http://my.netscape.com/rdf/simple/0.9/"
  100.                         ||  dataXML.documentElement.getAttribute("xmlns").toLowerCase() == "http://purl.org/atom/ns#")
  101.                         ) 
  102.                         || (dataXML.documentElement.nodeName != null && dataXML.documentElement.nodeName.toLowerCase() == "rss")) isFeed = true; else return;
  103.  
  104.                      // set for unload
  105.                      evnt.originalTarget.documentElement.setAttribute("feedviewDocument", true);
  106.                      
  107.                     var ownerDocument = document.implementation.createDocument("", "", null);
  108.                     
  109.                     var strbundle=document.getElementById("feedViewString");
  110.             
  111.                     processor.setParameter(null, "feedUrl", evnt.originalTarget.documentURI);
  112.  
  113.  
  114.  
  115.                     processor.setParameter(null, "article_length", strbundle.getString("length")); // translation
  116.                     
  117.                     processor.setParameter(null, "feedTitle", strbundle.getString("title") );
  118.             
  119.       
  120.           // Import all settings and set default values if they had bad values
  121.           // catch seperatly ...
  122.               
  123.                     try{ articleSize = prefs.getIntPref("articleSize"); } catch(ex) { articleSize = 50; }
  124.                     processor.setParameter(null, "articleSize", articleSize);
  125.                     
  126.                     try{ showDate = prefs.getIntPref("showDate"); } catch(ex) { showDate = 1; }
  127.                     processor.setParameter(null, "showDate",  showDate);
  128.                     
  129.                     try{ showBar = prefs.getBoolPref("showBar"); } catch(ex) { showBar = true; }
  130.                     processor.setParameter(null, "showBar", showBar);
  131.                     
  132.                     try{ showImage = prefs.getBoolPref("showImage"); } catch(ex) { showImage = true; }
  133.                     processor.setParameter(null, "showImage",  showImage);    
  134.                     
  135.                     try{ timerInterval = prefs.getIntPref("timerInterval"); } catch(ex) { timerInterval = 0; }
  136.                     processor.setParameter(null, "timerInterval", timerInterval);
  137.                     
  138.                     try{ externalCSS = prefs.getCharPref("externalCSS"); } catch(ex) { externalCSS = ""; }
  139.                     processor.setParameter(null, "externalCSS", externalCSS );
  140.           
  141.  
  142.  
  143.                     
  144.                     var len = dataXML.getElementsByTagName("item").length; 
  145.                     if(len == 0) len = dataXML.getElementsByTagName("entry").length;
  146.                     
  147.                     processor.setParameter(null, "feedDescription", strbundle.getFormattedString("description", [len] ) );
  148.                     
  149.                     var newFragment = processor.transformToFragment(dataXML, ownerDocument);
  150.                     
  151.                     var oldLink = dataXML.documentElement.firstChild;
  152.                     
  153.                     // it would be better if we could replace the documentElement.. now the rdf/rss/feed tag remains
  154.                     dataXML.documentElement.replaceChild(newFragment, oldLink);
  155.  
  156.                     var oldLink = dataXML.documentElement.firstChild.nextSibling;
  157.                     
  158.                     
  159.                     
  160.                        while(oldLink != null)
  161.                        {
  162.                            oldLinkX = oldLink.nextSibling;
  163.                            
  164.                            if(oldLinkX != null)
  165.                            dataXML.documentElement.removeChild(oldLink);
  166.                            
  167.                            oldLink = oldLinkX;
  168.                            
  169.                            
  170.                        }    
  171.   
  172.                     
  173.                     
  174.                     
  175.                 }
  176.                 }catch(ex){
  177.                     //alert("Feedview error: \n" + ex);
  178.                 }
  179.             }
  180.     
  181.  
  182.        
  183.             window.addEventListener("load", load, true);
  184.             window.addEventListener("unload", observeSettings, true);
  185.                 
  186.